#pragma once

#include "../../../Libs/headers.default.h"
#include "../../../Libs/headers.cv.h"
#include "../../../Libs/headers.classification.h"
#include "../../../Libs/headers.ipfe.h"
#include "../../../Libs/headers.ipfe_tools.h"
#include "../../../Libs/headers.and_or_tree.h"

using namespace loirey;
using namespace binary_ipfe_classification;

namespace new_boost
{
	class CNewBoostGroundTruthLabel
	{
	public:
		int image_index;
		int object_index;
		CRectBox<int> box;
		int difficulty;

	public:
		bool operator < (const CNewBoostGroundTruthLabel& Another) const;
	};

	class CNewBoostSrcImageList
	{
	public:
		int BicFileNameSetIndex;
		string strPN_SrcImage;
		int Amount_SrcImage;
		string strPN_SrcAnnotation;
		string strFN_GT_LabelList;
		CSimpleTypeArray<int> PerImagePosAmount;
		int Amount_GT_Total;
		CSimpleTypeArray<CNewBoostGroundTruthLabel> GT_LabelList;
		int Amount_GT_Easy;
		int Amount_GT_Hard;
		int Amount_GT_Unknown;

	public:
		void myInit(
			int BicFileNameSetIndex,
			string strPN_SrcImage,
			int Amount_SrcImage,
			string strPN_SrcAnnotation,
			string strFN_GT_LabelList);
		string GetFN_SrcImage(int ImageIndex) const;
		string GetFN_SrcAnnotation(int ImageIndex) const;
		void MakeBicFileNameSet_SrcImage(CBicExampleParentFileNameSet& DstBicFileNameSet) const;
	};

	class CNewBoostCropGT_SamplingSettings
	{
	public:
		int IdealAmount;
		double IdealRatio_Easy;
		double IdealRatio_Hard;
		double IdealRatio_Unknown;

	public:
		void myInit(
			int IdealAmount,
			double IdealRatio_Easy,
			double IdealRatio_Hard,
			double IdealRatio_Unknown);
		void GetTargetExampleAmount(
			int& DstTargetExampleAmount_Easy,
			int& DstTargetExampleAmount_Hard,
			int& DstTargetExampleAmount_Unknown,
			const CNewBoostSrcImageList& SrcSIL ) const;
	};

};

